package cn.icanci.loopstack.ddk.admin.biz.service;

import cn.icanci.loopstack.ddk.admin.biz.model.RegisterModel;
import cn.icanci.loopstack.ddk.common.model.PageList;
import cn.icanci.loopstack.ddk.common.model.config.RegisterVO;
import cn.icanci.loopstack.ddk.common.socket.load.ResourceLoadResponseDTO;
import cn.icanci.loopstack.ddk.common.socket.publish.RegisterDTO;

import java.util.List;

/**
 * @author icanci
 * @since 1.0 Created in 2023/01/06 21:07
 */
public interface RegisterService {

    /**
     * 分页查询
     *
     * @param appId appId 注册的id
     * @param currentPage 当前页
     * @param pageSize 当前页数大小
     * @return 返回查询结果
     */
    PageList<RegisterModel> queryPage(String appId, int currentPage, int pageSize);

    /**
     * 字典键发布
     *
     * @param uuid uuid
     */
    void publishDict(String uuid);

    /**
     * 资源发布
     *
     * @param resource resource
     * @param value value
     */
    void publishResource(String resource, String value);

    /**
     * 向注册中心注册
     *
     * @param register register
     * @return boolean
     */
    boolean doRegister(RegisterDTO register);

    /**
     * 根据AppId加载配置信息
     *
     * @param appId appId
     * @return 返回配置信息
     */
    ResourceLoadResponseDTO loadByAppId(String appId);

    /**
     * 查询所有注册信息
     *
     * @return 返回注册信息
     */
    List<RegisterVO> queryAll();

    /**
     * 更新注册信息
     *
     * @param register register
     */
    void update(RegisterVO register);

    /**
     * 根据appID查询注册的应用
     *
     * @param appId appId
     * @return 返回注册列表
     */
    List<RegisterVO> queryByAppId(String appId);
}
